首先先在命令提示字元確認已安裝tensorflow
Git clone https://github.com/GitYCC/Tensorflow_Tutorial.git
這個tutorial示範如何實作LSTM文章產生器,機器可以不斷的根據前文猜測下一個「字母」,如此一來只要給個開頭字母,LSTM就可以幫補成一篇文章,amazing.
引用函式庫
建立字母庫:
印出
模型輸入資料之batch data準備示意說明如下圖
如上圖例,Batch Size=2所以餵2個字母進去,那這些不相干的字母在取樣的時候,我們會盡量讓它平均分配在文字庫,才能確保彼此之間不相干,以增加LSTM的訓練效率和效果。
產生的training data如下:
定義模型函數
包含
Sample_distribution: uniform分配(0~1)
Sample:將預測輸出轉換成1-hot encoded samples
Logprob:log機率轉換
進入到建立LSTM Model階段
其中LSTM隱藏層神經元的部分在這裡,可對照上一篇模型介紹的hidden node概念圖
LSTM內的Gate參數設定如以下code
會跑一陣子…(機器吶喊中)
以下是訓練過程的log
最後幾個epoch
用法:輸入字母m,產生一篇m開頭的1000字文章
print(model_LSTM.generate(c='m',len_generate=1000))
結果輸出如下
參考來源
實作Tensorflow (6):Recurrent Neural Networks (RNN) and Long Short-Term Memory (LSTM)
https://www.ycc.idv.tw/tensorflow-tutorial_6.html
Github
https://github.com/GitYCC/Tensorflow_Tutorial